package cn.tedu.collection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/*本类用于测试list接口*/
public class TestList {
    public static void main(String[] args) {
        //1.
        List<String> list = new ArrayList<String>();

        //2.测试继承的方法
        list.add("大力娃");
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("喷水娃");
        list.add("玩火娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);
//        list.clear();//清空集合
//        System.out.println(list);
        System.out.println(list.remove("千顺娃"));
        System.out.println(list.size());
        System.out.println(list.hashCode());
        System.out.println(list.isEmpty());
        System.out.println(list.contains("小紫娃"));
        System.out.println(list.equals("喷火娃"));
        System.out.println(Arrays.toString(list.toArray()));

        //3.测试list特有的方法
        list.add("小蝴蝶");//不指定位置就追加在最后
        System.out.println(list);

        list.add(0,"蛇精");//在指定索引处添加元素，首个位置下标为0
        System.out.println(list);
        System.out.println(list.get(2));//头铁娃,获取指定索引处的元素
        System.out.println(list.indexOf("小蝴蝶"));//7,判断指定元素的索引
        list.add("小蝴蝶");
        System.out.println(list.lastIndexOf("小蝴蝶"));//判断指定元素最后一次出现的索引
        System.out.println(list.remove(5));//根据索引移出指定元素
        System.out.println(list);
        System.out.println(list.set(7,"蝎子精"));//重置指定下标处的元素值
        System.out.println(list);

        List<String> subList = list.subList(3,7);//截取子串，含头不含尾[3,7)
        System.out.println(subList);

        //4.集合间的操作
        List<String> list2 = new ArrayList<String>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        System.out.println(list.addAll(list2));//把list2追加到list集合最后
        System.out.println(list);
        System.out.println(list.addAll(2,list2));//把list2集合的所有元素添加到list中的指定位置
        System.out.println(list);
        System.out.println(list.containsAll(list2));//判断list集合是否包含list2中的所有元素
        System.out.println(list.retainAll(list2));//保留list集合中属于list2集合的所有元素
        System.out.println(list);
        System.out.println(list.removeAll(list2));//移除list中属于list2中的所有内容
        System.out.println(list);



    }
}
